/**
 * @(#)PerfilSocial.java
 *
 * Copyright (c) 2005-2010 PsiqueWare S.A. de C.V. All Rights Reserved.
 * This software is the proprietary information PsiqueWare S.A. de C.V.
 * Use is subject to license terms.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * <br/>Usuario : &Aacute;ngel El&eacute;ctrico
 * <br/>Creación:
 * <br/>
 * <br/>
 * <br/><t5>Cambios :</t5>
 * <br/><b>Fecha | Autor  |  Cambios</b>
 * <ul>
 * <li> | <a href = "mailto:AngelElectrico@PsiqueWare.com">&Aacute;ngel El&eacute;ctrico</a> | Creaci&oacute;n del Objeto.</li>
 *
 * </ul>
 */
package com.psiqueware.alheli.id;

import com.psiqueware.alheli.basico.BaseObjectInterface;

import java.net.URI;

/**
 * Perfil para un Usuario con campos de interacci&oacute;n social como los modelados por Spring Social.
 *
 * Los campos de Srping Social y su correspondencia son: <br/>
 * <ol>
 *     <li>userId: {@link Usuario#getIdentificacion()} usando <code>idUsuario</code> para llegar.</li>
 *     <li>providerId: {@link Dominio#getNombre()}</li>
 *     <li>providerUserId: <code>identificacionSocial</code></li>
 *     <li>rank: <code>prioridad</code></li>
 *     <li>displayName: {@link Usuario#getTitulo()}</li>
 *     <li>profileUrl: direccionPerfil</li>
 *     <li>imageUrl: direccionImagen</li>
 *     <li>accessToken: identificacionRemota</li>
 *     <li>secret: autentificacionRemota</li>
 *     <li>refreshToken: identificacionRefresco</li>
 *     <li>expireTime: expiracion</li>
 * </ol>
 * <br/>Paquete Original: com.psiqueware.alheli.id
 * <br/>Nombre  Original: PerfilSocial
 * <br/><a href="PerfilSocial.java.html"><i>Ver C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@PsiqueWare.com">Angel El&eacute;ctrico</a>
 * @version Revision: 1.0
 */
public interface PerfilSocial extends BaseObjectInterface
{
    /**
     * Devuelve el Identificador &uacute;nico del {@link com.psiqueware.alheli.id.modelo.UsuarioK} al que pertenece esta informaci&oacute;n social.
     * @return Valor de 'm_idUsuario'.
     */
    Long getIdUsuario();

    /**
     * Establece el Nombre de usuario en la aplicaci&oacute;n remota.
     * @return Valor de 'm_identificacionSocial'.
     */
    String getIdentificacionSocial();

    /**
     * Devuelve el Prioridad que indica que si el usuario tiene m&uacute;ltiples conexiones cu&aacute;l se usar&aacute; primero.
     * @return Valor de 'm_prioridad'.
     */
    int getPrioridad();

    /**
     * Devuelve la {@link java.net.URI} que apunta al perfil social.
     * @return Valor de 'm_direccionPerfil'.
     */
    URI getDireccionPerfil();

    /**
     * Devuelve la {@link java.net.URI} que apunta a la imagen del perfil social.
     * @return Valor de 'm_direccionImagen'.
     */
    URI getDireccionImagen();

    /**
     * Establece la Cadena que identifica el acceso remoto en la aplicaci&oacute;n social.
     * @return Valor de 'm_identificacionRemota'.
     */
    String getIdentificacionRemota();

    /**
     * Devuelve la Cadena que autentifica el acceso remoto en la aplicaci&oacute;n social.
     * @return Valor de 'm_autentificacionRemota'.
     */
    char[] getAutentificacionRemota();

    /**
     * Devuelve la Cadena que identifica el reuso del acceso remoto en la aplicaci&oacute;n social.
     * @return Valor de 'm_identificacionRefresco'.
     */
    String getIdentificacionRefresco();

    /**
     * Devuelve el Tiempo en milisegundos para la expiraci&oacute;n de las credenciales remotas.
     * @return Valor de 'm_expiracion'.
     */
    Long getExpiracion();

    /**
     * Devuelve el {@link Dominio} al que pertenece esta informaci&oacute;n social.
     *
     * @return Valor de 'm_dominio'.
     */
    Dominio getDominio();
}
